/**
 * 全局Loading组件(页面跳转持久化版)
 * 依赖: jQuery
 * 使用方法: 
 *   showLoading() - 显示loading
 *   hideLoading() - 隐藏loading
 */

// 确保jQuery已加载
if (typeof jQuery === 'undefined') {
  console.error('错误: Loading组件需要jQuery，请确保jQuery已加载');
} else {
  // 使用jQuery的ready确保DOM加载完成
  jQuery(document).ready(function($) {
    try {
      // 检查sessionStorage中的loading状态
      const shouldShowLoading = sessionStorage.getItem('globalLoading') === 'true';
      
      // Loading组件类
      function GlobalLoading() {
        // 创建loading元素
        this.loadingElement = document.createElement('div');
        this.loadingElement.className = 'global-loading';
        this.loadingElement.innerHTML = '<div class="loading-spinner"></div>';
        this.loadingElement.style.zIndex = '2147483647';
        this.loadingElement.style.position = 'fixed'; // 确保在页面跳转时可见
        
        // 添加到body最前面
        $('body').prepend(this.loadingElement);
        
        // 恢复之前的loading状态
        if (shouldShowLoading) {
          this.loadingElement.classList.add('active');
        }
        
        console.log('Loading组件DOM已创建', shouldShowLoading ? '(从缓存恢复显示)' : '');
      }

      // 显示loading
      GlobalLoading.prototype.show = function() {
        this.loadingElement.classList.add('active');
        sessionStorage.setItem('globalLoading', 'true');
        console.log('Loading显示(状态已保存)');
        return true;
      };

      // 隐藏loading
      GlobalLoading.prototype.hide = function() {
        this.loadingElement.classList.remove('active');
        sessionStorage.removeItem('globalLoading');
        console.log('Loading隐藏(状态已清除)');
        return true;
      };

      // 创建并暴露全局实例
      window._loadingInstance = new GlobalLoading();
      window.showLoading = function() {
        return window._loadingInstance.show();
      };
      window.hideLoading = function() {
        return window._loadingInstance.hide();
      };
      
      // 页面卸载时保持loading状态
      window.addEventListener('beforeunload', function() {
        if (window._loadingInstance.loadingElement.classList.contains('active')) {
          sessionStorage.setItem('globalLoading', 'true');
        }
      });
      
      console.log('持久化Loading组件初始化完成');
      
    } catch (error) {
      console.error('Loading组件初始化失败:', error);
      sessionStorage.removeItem('globalLoading');
    }
  });
}